import axios from 'axios';

// 统一的接口基础URL
const baseURL = '/api';

/**
 * 获取所有可选院校列表
 * @returns {Promise<Array>} 院校列表
 */
export const fetchColleges = async () => {
  try {
    console.log('开始获取院校列表...');
    const response = await axios.get(`${baseURL}/college_entrance/college/list`);
    console.log('获取院校数据响应:', response);
    
    if (response.data && response.data.rows) {
      const colleges = response.data.rows.map(college => ({
        value: college.collegeNo,
        label: college.collegeName,
        tier: college.collegeType || '本科', // 添加院校层次
        location: college.collegeLocation || '未知', // 添加所在地区
        data: college
      }));
      console.log('处理后的院校数据:', colleges);
      return colleges;
    }
    
    console.warn('院校数据格式异常，返回备用数据');
    // 数据格式异常时返回模拟数据
    return [
      { value: '001', label: '北京大学', tier: '985', location: '北京' },
      { value: '002', label: '清华大学', tier: '985', location: '北京' },
      { value: '003', label: '复旦大学', tier: '985', location: '上海' },
      { value: '004', label: '上海交通大学', tier: '985', location: '上海' },
      { value: '005', label: '浙江大学', tier: '985', location: '浙江' },
      { value: '006', label: '南京大学', tier: '985', location: '江苏' },
      { value: '007', label: '武汉大学', tier: '985', location: '湖北' },
      { value: '008', label: '中国人民大学', tier: '985', location: '北京' }
    ];
  } catch (error) {
    console.error('获取院校列表失败:', error);
    // 发生错误时返回模拟数据作为后备方案
    return [
      { value: '001', label: '北京大学', tier: '985', location: '北京' },
      { value: '002', label: '清华大学', tier: '985', location: '北京' },
      { value: '003', label: '复旦大学', tier: '985', location: '上海' },
      { value: '004', label: '上海交通大学', tier: '985', location: '上海' },
      { value: '005', label: '浙江大学', tier: '985', location: '浙江' },
      { value: '006', label: '南京大学', tier: '985', location: '江苏' },
      { value: '007', label: '武汉大学', tier: '985', location: '湖北' },
      { value: '008', label: '中国人民大学', tier: '985', location: '北京' }
    ];
  }
};

/**
 * 获取专业列表，可按院校过滤
 * @param {String} collegeNo - 可选，院校编号
 * @returns {Promise<Array>} 专业列表
 */
export const fetchMajors = async (collegeNo = '') => {
  try {
    console.log(`开始获取专业列表, 院校编号: ${collegeNo || '全部'}`);
    let url = `${baseURL}/college_entrance/profession/list`;
    if (collegeNo) {
      url += `?collegeNo=${collegeNo}`;
    }
    
    const response = await axios.get(url);
    console.log('获取专业数据响应:', response);
    
    if (response.data && response.data.rows) {
      const majors = response.data.rows.map(major => ({
        value: major.professionNo,
        label: major.professionName,
        collegeNo: major.collegeNo,
        college: major.collegeNo, // 添加与前端组件兼容的字段
        category: major.professionCategory || '未分类', // 添加专业类别
        data: major
      }));
      console.log('处理后的专业数据:', majors);
      return majors;
    }
    
    console.warn('专业数据格式异常，返回备用数据');
    // 返回备用数据
    const fallbackMajors = getFallbackMajors(collegeNo);
    return fallbackMajors;
  } catch (error) {
    console.error('获取专业列表失败:', error);
    // 发生错误时返回模拟数据作为后备方案
    return getFallbackMajors(collegeNo);
  }
};

// 获取备用专业数据的辅助函数
function getFallbackMajors(collegeNo) {
  const allMajors = [
    { value: '101', label: '计算机科学与技术', collegeNo: '001', college: '001', category: '工学' },
    { value: '102', label: '软件工程', collegeNo: '001', college: '001', category: '工学' },
    { value: '103', label: '人工智能', collegeNo: '002', college: '002', category: '工学' },
    { value: '104', label: '电子信息工程', collegeNo: '002', college: '002', category: '工学' },
    { value: '105', label: '临床医学', collegeNo: '003', college: '003', category: '医学' },
    { value: '106', label: '物理学', collegeNo: '004', college: '004', category: '理学' },
    { value: '107', label: '数学与应用数学', collegeNo: '005', college: '005', category: '理学' },
    { value: '108', label: '机械工程', collegeNo: '001', college: '001', category: '工学' },
    { value: '109', label: '土木工程', collegeNo: '002', college: '002', category: '工学' },
    { value: '110', label: '经济学', collegeNo: '003', college: '003', category: '经济学' },
    { value: '111', label: '金融学', collegeNo: '004', college: '004', category: '经济学' },
    { value: '112', label: '会计学', collegeNo: '005', college: '005', category: '管理学' },
    { value: '113', label: '工商管理', collegeNo: '006', college: '006', category: '管理学' },
    { value: '114', label: '法学', collegeNo: '007', college: '007', category: '法学' },
    { value: '115', label: '英语', collegeNo: '008', college: '008', category: '文学' },
    { value: '116', label: '日语', collegeNo: '001', college: '001', category: '文学' },
    { value: '117', label: '心理学', collegeNo: '002', college: '002', category: '理学' },
    { value: '118', label: '新闻学', collegeNo: '003', college: '003', category: '文学' },
    { value: '119', label: '建筑学', collegeNo: '004', college: '004', category: '工学' },
    { value: '120', label: '生物科学', collegeNo: '005', college: '005', category: '理学' }
  ];
  
  // 如果指定了院校编号，就过滤出该院校的专业
  if (collegeNo) {
    return allMajors.filter(major => major.collegeNo === collegeNo);
  }
  
  return allMajors;
}

/**
 * 提交学生升学规划分析请求
 * @param {Object} data - 包含学生信息、选择的院校和专业等数据
 * @returns {Promise<Object>} 分析结果
 */
export const submitPlanningAnalysis = async (data) => {
  try {
    const response = await axios.post(`${baseURL}/college_entrance/aspiration/evaluate`, data);
    return response.data;
  } catch (error) {
    console.error('提交升学规划分析失败:', error);
    // 返回模拟数据作为后备方案
    return {
      code: 200,
      data: {
        collegeAnalysis: {
          admissionProbability: '较高',
          historicalData: '近三年录取分数线：589-612',
          recommendedMajors: ['计算机科学与技术', '软件工程', '人工智能'],
          matchingAnalysis: '根据你的成绩和兴趣爱好，该校计算机类专业是较为理想的选择。',
          suggestions: '建议重点关注该校的计算机学院，多了解学科竞赛情况。'
        },
        majorAnalysis: {
          matchingScore: 85,
          subjectCompatibility: '数学、物理优势明显，与专业要求高度匹配。',
          employmentProspect: '就业前景广阔，平均起薪高于同类院校。',
          advantages: '该专业在人工智能方向有较强研究实力。',
          improvementAreas: '建议加强英语学习，参加相关科技竞赛提升竞争力。'
        },
        learningPathPlan: [
          {
            stage: '高三冲刺阶段',
            keyPoints: '巩固数学物理基础，提高解题效率',
            duration: '3个月',
            actionItems: '每周完成5套模拟试题，重点攻克弱项科目'
          },
          {
            stage: '志愿填报准备',
            keyPoints: '深入了解目标院校及专业情况',
            duration: '1个月',
            actionItems: '收集近3年录取数据，参加目标院校线上咨询会'
          },
          {
            stage: '大学预科准备',
            keyPoints: '提前了解专业基础知识',
            duration: '2个月',
            actionItems: '学习编程基础，阅读专业导论类书籍'
          }
        ]
      }
    };
  }
}; 